<html>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 
<link rel="stylesheet" type="text/css" href="css/css">
<body>

<b>linux shellcode为什么不调用libc中的库函数，而利用系统调用?</b><br>
我们为什么不利用现成的libc库中库函数system(),execl()等来做呢？在Solar Designer早期写的patch版本中,这种办法是可行的。他甚至写了几个测试程序来验证这种方法。用system()是最简单的方法，因为只需要提供一个参数"/bin/sh",通过在libc库中搜，可以得到system()函数的地址以及shell字符串地址，因此可以用这种返回libc库中的办法来绕过这种堆栈保护。但后来Solar Designer改进了他的patch,将libc库中的库函数的地址映射到代码段的低端，使每个库函数的地址中都以0x00开始，因为通常溢出都发生在字符串拷贝中，所以这样攻击者就很难通过字符串来传递这个库函数地址以及后续参数。
</body>
</html>
